package com.lening.yygh.cmn.controller;

import com.lening.yygh.cmn.service.DictService;
import com.lening.yygh.common.result.Result;
import com.lening.yygh.model.cmn.Dict;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

@Api(description = "数据字典接口")
@RestController
@CrossOrigin
@RequestMapping("/admin/cmn/dict")
public class DictController {
    @Resource
    private DictService dictService;


    /**
     *这些方法看起来东西很多，其实没什么，就是两三行，就是多了一些注释
     * swagger的注释，就是给前端开的，作为后端我们尅不写，但是在工资开发的时候，
     * 不能不写啊，那领导找您，前端找你。
     */
    @ApiOperation(value = "获取数据字典名称")
    @GetMapping(value = "/getName/{parentDictCode}/{value}")
    public String getName(@PathVariable("parentDictCode") String parentDictCode,
                          @PathVariable("value") String value) {
        return dictService.getNameByParentDictCodeAndValue(parentDictCode, value);
    }

    @ApiOperation(value = "获取数据字典名称")
    @ApiImplicitParam(name = "value", value = "值", required = true, dataType = "Long", paramType = "path")
    @GetMapping(value = "/getName/{value}")
    public String getName(@PathVariable("value") String value) {
        return dictService.getNameByParentDictCodeAndValue("", value);
    }




















    //根据数据id查询子数据列表
    @ApiOperation(value = "根据数据id查询子数据列表")
    @GetMapping("/findChildData/{id}")
    public Result findChildData(@PathVariable Long id) {
        List<Dict> list = dictService.findChlidData(id);
        return Result.ok(list);
    }

    //导出全部数据，要是想导出部分数据，那么就需要在导出之前查询出来
    @ApiOperation(value="导出")
    @GetMapping(value = "/exportData")
    public void exportData(HttpServletResponse response) {
        //导入使用的是request请求，而导出是response
        dictService.exportData(response);
    }

    //excel的导入其实就是文件的上传，

    /**
     * 文件上传，前端和后端都需要特殊处理
     * 1、后端：必须有依赖，IO的依赖，接收必须是MultipartFile类型，
     *      在springmvc的配置文件中进行配置，我们是SpringBoot，零配置
     *
     */
    @ApiOperation(value = "导入")
    @PostMapping("/importData")
    public Result importData(MultipartFile file) {
        /**
         * 以前我们自己写的时候，我们是图片，需要写到项目里面，或者硬盘上面去
         * 现在我们传递过来的是excel，我们就没有必要存储起来，直接解析，
         * 我们直接在开始系统里面已经使用POI解析过我们老师上传的excel的试卷了
         * 这次我们使用的easyexcel，他相对要智能化一点
         */

        dictService.importData(file);
        return Result.ok();
    }
}
